package edu.zueb.sport.rest.api;

import com.google.common.collect.Lists;
import java.util.List;
import lombok.Data;

/**
 * 分页结果封装类。
 *
 * @param <T> 分页数据的类型
 */
@Data
public class Page<T> {

    /**
     * 总记录数。
     */
    private int totalCount;

    /**
     * 总页数。
     */
    private int totalPage;

    /**
     * 每页大小。
     */
    private int pageSize;

    /**
     * 当前页的数据列表。
     */
    private List<T> list;

    public Page(int totalCount, int pageSize, List<T> list) {
        this.totalCount = totalCount;
        this.pageSize = pageSize;
        this.list = list;

        // 计算总页数
        totalPage = (totalCount + pageSize - 1) / pageSize;
    }

    public static <T> Page<T> empty() {
        return new Page<>(0, 10, Lists.newArrayList());
    }

    public static <T> Page<T> asPage(int totalCount, int pageSize, List<T> list) {
        return new Page<>(totalCount, pageSize, list);
    }
}
